/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Service;

import javax.jws.WebService;
import DB.Convenio;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import DB.HibernateUtil;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import org.hibernate.Criteria;

/**
 *
 * @author Jacqueline
 */
@WebService()
public class ConvenioWS {

    /**
     * Web service operation
     */
    @WebMethod(operationName = "agregarConvenio")
    public Long agregarConvenio(@WebParam(name = "rutInstitucion")String rutInstitucion,
            @WebParam(name = "formaPago")String formaPago,
            @WebParam(name = "fechaInicio")String fechaInicio,
            @WebParam(name = "fechaTermino")String fechaTermino,
            @WebParam(name = "porcentaje") String porcentaje,
            @WebParam(name = "observacion")String observacion,
            @WebParam(name = "activo") boolean activo) {

        DB.Convenio convenio = new DB.Convenio();
        convenio.setRutInstitucion(rutInstitucion);
        convenio.setFormaPago(formaPago);
        convenio.setFechaInicio(fechaInicio);
        convenio.setFechaTermino(fechaTermino);
        convenio.setPorcentaje(porcentaje);
        convenio.setObservacion(observacion);
        convenio.setActivo(activo);

        ControladorDeObjetos.saveObject(convenio);
        return convenio.getId();
    }

    @WebMethod(operationName = "listarConvenios")
    public List<Convenio> listarConvenios() {
        return ControladorDeObjetos.getAllObjectByClassType(Convenio.class);
    }

    @WebMethod(operationName = "modificarConvenio")
    public boolean modificarConvenio(@WebParam(name = "Id") Long Id,
            @WebParam(name = "rutInstitucion")String rutInstitucion,
            @WebParam(name = "formaPago")String formaPago,
            @WebParam(name = "fechaInicio")String fechaInicio,
            @WebParam(name = "fechaTermino")String fechaTermino,
            @WebParam(name = "porcentaje") String porcentaje,
            @WebParam(name = "observacion")String observacion,
            @WebParam(name = "activo") boolean activo){

        Convenio convenio = (Convenio) ControladorDeObjetos.loadObjectByLongId(Id, Convenio.class);

        convenio.setRutInstitucion(rutInstitucion);
        convenio.setFormaPago(formaPago);
        convenio.setFechaInicio(fechaInicio);
        convenio.setFechaTermino(fechaTermino);
        convenio.setPorcentaje(porcentaje);
        convenio.setObservacion(observacion);
        convenio.setActivo(activo);
        return ControladorDeObjetos.updateObject(convenio);
    }

    @WebMethod(operationName = "cargarConvenio")
    public Object cargarConvenio(@WebParam(name = "Id") Long Id) {
        return ControladorDeObjetos.loadObjectByLongId(Id, Convenio.class);
    }

    @WebMethod(operationName = "eliminarConvenio")
    public boolean eliminarConvenio(@WebParam(name = "Convenio")Convenio convenio){
        return ControladorDeObjetos.updateObject(convenio);
    }

   @WebMethod(operationName = "filtrarConvenios")
    public List<Convenio> filtrarConvenios(@WebParam(name = "buscar") String buscar) {
        Session s = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction trans = s.beginTransaction();
        Criteria c = s.createCriteria(Convenio.class).add(Restrictions.or(Restrictions.or(Restrictions.like("rutInstitucion", "%" + buscar + "%"),
                Restrictions.like("porcentaje", "%" + buscar + "%")),
                (Restrictions.like("formaPago", "%" + buscar + "%"))));
        List l = c.list();
        s.close();
        return l;
    }
}
